package com.zhiwen.design.singleton;

/**
 * @Auther: wuzhiwen
 * @Date: 2018/11/30 10:34
 * @Description: 懒汉式（延迟加载方式） 优化二
 */
public class Singleton04 {
    private Singleton04() {
    }

    /**
     * 被volatile修饰的变量的值，将不会被本地线程缓存，
     * 所有对该变量的读写都是直接操作共享内存,从而确保多个线程能正确的处理该变量。
     */
    private static volatile Singleton04 Singleton04 = null;

    public static Singleton04 getSingleton04() {
        if (Singleton04 == null) {
            synchronized (Singleton04.getClass()) {
                return new Singleton04();
            }
        }
        return Singleton04;
    }
}
